package com.sys.SysSales.mapper;

import java.util.List;
import com.sys.SysSales.domain.SysSalesSummary;
import org.apache.ibatis.annotations.Param;

/**
 * 销售统计Mapper接口
 * 
 * @author ruoyi
 * @date 2025-09-28
 */
public interface SysSalesSummaryMapper 
{
    /**
     * 查询销售统计
     * 
     * @param summaryId 销售统计主键
     * @return 销售统计
     */
    public SysSalesSummary selectSysSalesSummaryBySummaryId(Long summaryId);

    /**
     * 查询销售统计列表
     * 
     * @param sysSalesSummary 销售统计
     * @return 销售统计集合
     */
    public List<SysSalesSummary> selectSysSalesSummaryList(SysSalesSummary sysSalesSummary);

    /**
     * 新增销售统计
     * 
     * @param sysSalesSummary 销售统计
     * @return 结果
     */
    public int insertSysSalesSummary(SysSalesSummary sysSalesSummary);

    /**
     * 修改销售统计
     * 
     * @param sysSalesSummary 销售统计
     * @return 结果
     */
    public int updateSysSalesSummary(SysSalesSummary sysSalesSummary);

    /**
     * 删除销售统计
     * 
     * @param summaryId 销售统计主键
     * @return 结果
     */
    public int deleteSysSalesSummaryBySummaryId(Long summaryId);

    /**
     * 批量删除销售统计
     * 
     * @param summaryIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteSysSalesSummaryBySummaryIds(Long[] summaryIds);

//    public List<SysSalesSummary> selectSysSalesSummaryLista(SysSalesSummary sysSalesSummary);

    /**
     * 按时间条件查询销售统计金额等信息
     * 对应MyBatis映射文件中的selectOrdersByCreateTime标签
     *
     * @param beginTime 自定义开始时间（格式：yyyy-MM-dd HH:mm:ss）
     * @param endTime   自定义结束时间（格式：yyyy-MM-dd HH:mm:ss）
     * @param dayFlag
     * @param monthFlag 近一个月查询标记（非null则触发近一个月逻辑）
     * @param yearFlag  近一年查询标记（非null则触发近一年逻辑）
     * @return 销售统计结果（总金额、订单数、平均金额、总销量）
     */
    SysSalesSummary selectOrdersByCreateTime(
            @Param("beginTime") String beginTime,  // @Param指定参数名，与MyBatis中#{}对应
            @Param("endTime") String endTime,
            @Param("dayFlag") Boolean dayFlag,
            @Param("monthFlag") Boolean monthFlag,
            @Param("yearFlag") Boolean yearFlag
    );

/**
 * 按时间查询热销产品
 */

SysSalesSummary selectTopSellingProductByTime(
        @Param("dayFlag") Boolean dayFlag,
        @Param("monthFlag") Boolean monthFlag,
        @Param("yearFlag") Boolean yearFlag,
        @Param("beginTime") String beginTime,  // 新增：开始时间，格式如"2023-01-01 00:00:00"
        @Param("endTime") String endTime      // 新增：结束时间，格式如"2023-12-31 23:59:59"
);


/**
 * 按时间查询销售量
 */
SysSalesSummary getSalesVolumeByTimeRange(
        @Param("dayFlag") Boolean dayFlag,
        @Param("monthFlag") Boolean monthFlag,
        @Param("yearFlag") Boolean yearFlag,
        @Param("beginTime") String beginTime,  // 新增：开始时间，格式如"2023-01-01 00:00:00"
        @Param("endTime") String endTime      // 新增：结束时间，格式如"2023-12-31 23:59:59"
);

}
